/**
* @author TDSoft
*
* La clase Estudiante representa al usuario de tipo Estudiante.
* Es una clase hija de Usuario y serializable
*
* @see GestorEstudiante, GestorUsuario
*/
package edu.uoc.tds.pec4.model;

import java.io.Serializable;
import java.util.Date;

public class Estudiante extends Usuario implements Serializable{
    
    /** Identificador universal para esta clase Serializable. */
    private static final long serialVersionUID = -21L;
    /** Universidad a la que pertenece el estudiante. */
    private Universidad universidad;
    
    /**
     * Constructor sin parámetros de la clase Estudiante.
     * Crea una instancia de Estudiante.
     * {pre: no hay parámetros}
     * {post: devuelve una instancia de la clase Estudiante}
     */
    public Estudiante(){
        super();
        this.universidad = null;
    }

    /**
     * Constructor con parámetros de la clase Estudiante.
     * Crea una instancia de Estudiante.
     * {pre: id_usuario es un entero distinto de cero
     *      usuario es una cadena que no puede ser vacía
     *      clave es una cadena que no puede ser vacía
     *      nombre es una cadena que no puede ser vacía
     *      apellido_primero es una cadena que no puede ser vacía
     *      apellido_segundo es una cadena que puede ser vacía 
     *      documento es una cadena que no puede ser vacía
     *      fecha_alta es una fecha que no puede ser vacía
     *      fecha_baja es una fecha que puede ser vacía 
     *      universidad representa al objeto universidad a la que pertenece el estudiante}
     * {post: devuelve una instancia de la clase Estudiante}
     * @param id_usuario representa el identificador para el estudiante
     * @param usuario representa el nombre de conexión a la aplicación para el estudiante
     * @param clave representa la clave de conexión a la aplicación para el estudiante
     * @param nombre representa el nombre del estudiante
     * @param apellido_primero representa el apellido primero del estudiante
     * @param apellido_segundo representa el apellido segundo del estudiante
     * @param documento representa el documento de identificación del estudiante
     * @param fecha_alta representa la fecha de alta del estudiante en el sistema
     * @param fecha_baja representa la fecha de baja del estudiante en el sistema
     * @param universidad representa el objeto universidad a la que pertenece el estudiante
     */
    public Estudiante(int id_usuario, String usuario, String clave, String nombre, String apellido_primero, String apellido_segundo, String documento, Date fecha_alta, Date fecha_baja, Universidad universidad){
        super(id_usuario,TipoUsuario.ESTUDIANTE.getIdTipoUsuario(), usuario,clave,nombre,apellido_primero,apellido_segundo,documento,fecha_alta,fecha_baja);
        this.universidad = universidad;
    }
    
    /**
     * Accesor de escritura de la universidad a la que pertenece el estudiante 
     * {pre: x es una instancia de Universidad)
     * {post: universidad asigna la universidad a la que pertenece el estudiante}
     */
    public void setUniversidad(Universidad universidad){
        this.universidad = universidad;
    }
    
    /**
     * Accesor de lectura de la universidad a la que pertenece el estudiante 
     * {pre: x es una instancia de estudiante)
     * {post: devuelve la universidad a la que pertenece el estudiante}
     */
    public Universidad getUniversidad(){
        return this.universidad;
    }
}
